export class LinkGoods {
  constructor (dimensionKey) {
    this.prevCache = []; // 进入弹框时所缓存的关联商品数据
    this.current = new Map(); // 当前操作的关联商品数据
    this.dimensionKey = dimensionKey; // 关联维度key
  }
  // 增加关联商品
  add (row, key = this.dimensionKey) {
    this.current.set(row[key], row);
  }
  // 删除关联商品
  delete (row, key = this.dimensionKey) {
    this.current.delete(row[key]);
  }
  // 清空当前操作的关联数据
  clear () {
    this.current.clear();
  }
  // 初始化预取消要回填的关联数据
  initPrev () {
    this.prevCache = [...this.current].map(item => item[1]).filter(item => item);
  }
  // 弹框取消操作 - 还原初进弹框时的关联数据
  cancel () {
    this.current = new Map();
    this.prevCache.forEach(item => {
      this.current.set(item[this.dimensionKey], item);
    });
  }
  // 获取当前关联的商品数据
  getCurrent () {
    return this.current;
  }
  // 获取最终关联商品的数据集合结果
  getResult () {
    return [...this.current].map(item => item[1]).filter(item => item);
  }
  has (val) {
    return this.current.has(val);
  }
  // 当前关联数据为空
  isNull () {
    return this.current.size === 0;
  }
  // 获取关联数据数量
  getSize () {
    return this.current.size;
  }
}
